package com.atguigu.day14.enum01.e2;


import org.junit.Test;

/*jdk5之前实现枚举:
        1.构造器私有
        2.显示提供对应的值
  jdk5之后提供了枚举类型:
       1.默认构造器私有
       2.简化了提供值的操作
  枚举中的方法:
      1.枚举类型.values() 获取所有的枚举对象
      2.枚举对象.valueOf("名字") 获取指定的枚举对象
      3.获取名字和序列值
        枚举对象.name();
        枚举对象.ordinal(); 序列值从0开始
   注意:
       1.枚举对象必须在枚举类的上面
       2.switch(表达式){} 可以枚举类型
       3.自定义枚举类型 默认继承自Enum类
       4.values() valueOf() 编译器提供
       5.枚举类型可以实现接口 既可以统一处理 也可以单独处理



        */
public class SeasonTest {
    @Test
    public void test07(){
        Gender man = Gender.MAN;
        man.run();
        Gender woman = Gender.WOMAN;
        woman.run();
    }


    @Test
    public void test06(){
        Season summer = Season.SUMMER;

        System.out.println("summer = " + summer.toString());
    }


    @Test
    public void test05(){
        Season spring = Season.SPRING;


        switch (spring){
            case SPRING :
                System.out.println("春天");
                break;

        }


    }


    @Test
    public void test04(){
        //使用枚举对象获取名字 和 序列值
        Season[] v = Season.values();
        for (Season season : v) {
            String name = season.name();
            int ordinal = season.ordinal();
            System.out.println("name = " + name+", ordinal = " + ordinal);
        }

    }
    @Test
    public void test03(){
        //todo 根据名字获取指定的枚举对象
        Season winter = Season.valueOf("WINTER");
        System.out.println("winter = " + winter);

    }

    @Test
    public void test02(){
        //todo 获取所有的枚举对象
        Season[] values = Season.values();
        for (Season value : values) {
            System.out.println("value = " + value);
        }

    }
    @Test
    public void test01(){

        Season s1 = Season.SPRING;
        Season s2 = Season.SPRING;
        System.out.println(s1 == s2);

    }

}
